<?php

// +----------------------------------------------------------------------

// | OneThink [ WE CAN DO IT JUST THINK IT ]

// +----------------------------------------------------------------------

// | Copyright (c) 2013 http://www.onethink.cn All rights reserved.

// +----------------------------------------------------------------------

// | Author: huajie <yangweijiester@gmail.com>

// +----------------------------------------------------------------------



namespace Admin\Controller;

use Think\QiNiuStorage;



/**

 * 七牛扩展类测试控制器

 * @author yangweijie <yangweijiester@gmail.com>

 */

class QiniuController extends AdminController {



    public function _initialize(){

        $config = array(

            'accessKey'=>'__ODsglZwwjRJNZHAu7vtcEf-zgIxdQAY-QqVrZD',

            'secrectKey'=>'Z9-RahGtXhKeTUYy9WCnLbQ98ZuZ_paiaoBjByKv',

            'bucket'=>'blackwhite',

            'domain'=>'blackwhite.u.qiniudn.com'

        );

        $this->qiniu = new QiNiuStorage($config);

        parent:: _initialize();

    }



    //获取文件列表

    public function index(){

        $this->meta_title = '七牛云存储测试';

        $map = array();

        $prefix = trim(I('post.prefix'));

        if($prefix)

            $map['prefix'] = $prefix;

        $list = $this->qiniu->getList($map);

        if(!$list)

            trace($this->qiniu->error);

        $this->assign('qiniu', $this->qiniu);

        $this->assign('_list', $list['items']);

        $this->display();

    }



    public function del(){

        $file = trim(I('file'));

        if($file){

            $result = $this->qiniu->del($file);

            if(false === $result){

                $this->error($this->qiniu->errorStr);

            }else{

                $this->success('删除成功');

            }

        }else{

            $this->error('错误的文件名');

        }

    }



    public function dealImage($key){

        $url = $this->qiniu->dealWithType($key, 'img') ;

        redirect($url);

    }



    public function dealDoc($key){

        $url = $this->qiniu->dealWithType($key, 'doc');

        redirect($url);

    }



    public function rename(){

        $key = I('get.file');

        $new = I('new_name');

        $result = $this->qiniu->rename($key, $new);

        if(false === $result){

            trace($this->qiniu->error);

            $this->error($this->qiniu->errorStr);

        }else{

            $this->success('改名成功');

        }

    }



    public function batchDel(){

        $files = $_GET['key'];

        if(is_array($files) && $files !== array()){

            $files = array_column($files,'value');

            $result = $this->qiniu->delBatch($files);

            if(false === $result){

                $this->error($this->qiniu->errorStr);

            }else{

                $this->success('删除成功');

            }

        }else{

            $this->error('请至少选择一个文件');

        }

    }



    public function detail($key){

        $result = $this->qiniu->info($key);

        if($result){

            if(in_array($result['mimeType'], array('image/jpeg','image/png'))){

                $img = "<img src='{$this->qiniu->downlink($key)}?imageView/2/w/203/h/203'>";

            }else{

                $img = '<img class="file-prev" src="https://dn-portal-static.qbox.me/v104/static/theme/default/image/resource/no-prev.png">';

            }

            $time = date('Y-m-d H:i:s', bcmul(substr(strval($result['putTime']), 0, 11),"1000000000"));

            $filesize = format_bytes($result['fsize']);

            $tpl = <<<tpl

            <div class="right-head">

                {$key}

            </div>

            <div class="right-body">

                <div class="right-body-block">

                    <div class="prev-block">

                        {$img}

                    </div>

                    <p class="file-info-item">

                        外链地址：<input class="file-share-link" type="text" readonly="readonly" value="{$this->qiniu->downlink($key)}">

                    </p>

                    <p class="file-info-item">

                        最后更新时间：<span>{$time}</span>

                    </p>

                    <p class="file-info-item">

                        文件大小：<span class="file-size">{$filesize}</span>

                    </p>

                </div>

            </div>

tpl;

            $this->success('as', '', array('tpl'=>$tpl));

        }else{

            $this->error('获取文件信息失败');

        }



    }



    //上传单个文件 用uploadify

    public function uploadOne(){

        $file = $_FILES['qiniu_file'];

        $file = array(

            'name'=>'file',

            'fileName'=>$file['name'],

            'fileBody'=>file_get_contents($file['tmp_name'])

        );

        $config = array();

        $result = $this->qiniu->upload($config, $file);

        if($result){

            $this->success('上传成功','', $result);

        }else{

            $this->error('上传失败','', array(

                'error'=>$this->qiniu->error,

                'errorStr'=>$this->qiniu->errorStr

            ));

        }

        exit;

    }



}

